﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Autocentro.Entities;
using Autocentro.BussinesLogic;
using Microsoft.Practices.Unity;

namespace Autocentro.UI
{
    public partial class FrmServicio : Form
    {
        [Dependency]
        public IServicioBL ServicioBL { get; set; }
        public FrmServicio()
        {
            InitializeComponent();
            this.BuildUp();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            CargaData();

        }

        private void CargaData()
        {
            var criterio = txtCriterio.Text == string.Empty ? null : txtCriterio.Text;
            sERVICIOBindingSource.DataSource = ServicioBL.GetFromServiciosByCriterio(criterio);
        }

        private void txtCriterio_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtCriterio_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                CargaData();
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            var frmServicio = new FrmMttServicio();
            frmServicio.AddServicio();
            frmServicio.ShowDialog();
            CargaData();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            var EditarServi = sERVICIOBindingSource.Current as SERVICIO;

            if (EditarServi!=null)
            {
                var frmServicio = new FrmMttServicio();
                frmServicio._servicio = EditarServi;
                frmServicio.UpdateServicio();
                frmServicio.ShowDialog();
                CargaData();

            }
            else
            {
                MessageBox.Show("Debe de seleccionar un servicio");
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            var servicio = sERVICIOBindingSource.Current as SERVICIO;
            if (servicio!=null)
            {
                var rpt = MessageBox.Show(this,
                    string.Format("¿Desea eliminar el servicio: \n {0}?", servicio.Descripcion),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);

                if (rpt == DialogResult.Yes)
                {
                    ServicioBL.RemoveServicio(servicio.Id);
                    CargaData();
                }
            }
            else
            {
                MessageBox.Show("Debe de seleccionar un Servicio");
            }
        }

        private void FrmServicio_Load(object sender, EventArgs e)
        {
            CargaData();
        }
    }
}
